package com.cmc.cloud.cmclink.doc.convert;

import java.util.*;

import com.cmc.cloud.cmclink.doc.api.document.rep.SoSplitCombineRespDto;
import com.cmc.cloud.cmclink.doc.entity.SoSplitCombineDO;
import com.cmc.cloud.cmclink.doc.vo.blnospiltcombinevo.BlnoSpiltCombineCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnospiltcombinevo.BlnoSpiltCombineRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnospiltcombinevo.BlnoSpiltCombineUpdateReqVO;
import org.mapstruct.MapMapping;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import com.cmc.cloud.cmclink.doc.entity.BlnoSpiltCombineDO;

/**
 * 提单拆并申请主 Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface BlnoSpiltCombineConvert {
    /**
     * 获取转换接口的实例
     */
    BlnoSpiltCombineConvert INSTANCE = Mappers.getMapper(BlnoSpiltCombineConvert.class);

    /**
     * 将创建请求VO转换为DO
     *
     * @param bean 创建请求VO
     * @return DO
     */
    BlnoSpiltCombineDO convert(BlnoSpiltCombineCreateReqVO bean);

    /**
     * 将更新请求VO转换为DO
     *
     * @param bean 更新请求VO
     * @return DO
     */
    BlnoSpiltCombineDO convert(BlnoSpiltCombineUpdateReqVO bean);

    /**
     * 将DO转换为查询响应VO
     *
     * @param bean DO
     * @return VO
     */
    BlnoSpiltCombineRespVO convert(BlnoSpiltCombineDO bean);

    /**
     * 将DO转换为查询响应Dto
     * @param bean DO
     * @return DTO
     */
    @Mapping(source = "applyTime", target = "applyTimeString", dateFormat = "yyyy-MM-dd HH:mm")
    @Mapping(source = "approveTime", target = "approveTimeString", dateFormat = "yyyy-MM-dd HH:mm")
    SoSplitCombineRespDto convertToDto(BlnoSpiltCombineDO bean);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param list DO列表
     * @return VO List
     */
    List<BlnoSpiltCombineRespVO> convertList(List<BlnoSpiltCombineDO> list);

}
